基于MATLAB的战术手势识别功能的设计与实现

您所在的位置:网站首页 matlab getimage 基于MATLAB的战术手势识别功能的设计与实现

基于MATLAB的战术手势识别功能的设计与实现

2023-10-01 11:45| 来源: 网络整理| 查看: 265

一、课题介绍

手势识别技术是人们生活中常见的一类图像处理技术,也是目前比较火热的研究领域之一,手势识别可以用于人们生活中各种场景,比如利用手势进行电视信息交互,只需要通过手势就能实现对电视机的控制;在很多的VR游戏中,利用手势可以完成各种各样的游戏动作。总之手势识别技术在图像处理高速发展的情况下,变得越来越成熟,识别率以及识别速度也逐步提高,相信在不久的将来,手势识别技术一定会发挥更大的作用。

为便于官兵在训练中加强对手语的记忆掌握,根据不同的战术背景不同的手语需要,本文通过对手势识别算法的研究,开发出了基于MATLAB的战术手势识别功能。针对手势识别的实现,本文中首先研究了图像的预处理技术,通过对采集的战术手势图像的预处理,为后续的战术手势图像处理打下基础。接着研究手势图像的分割算法,本文中主要针对手势图像的连通域进行分析,从而将手势图像从背景中分割出来。而后将分割出的战术手势图像进行特征提取,采用手势图像的Hu不变矩以及空间几何特征作为图像的特征。最后利用BP神经网络训练图像特征,得到最终识别结果。算法高效且准确,同时开发了基于MATLAB的GUI界面,用户交互良好,界面美观,具有一定的实用价值。

课题意义

武警部队作为国家重要武装力量,履行着国家赋予的神圣使命,在执行解救人质、捕歼暴恐分子等任务时,确保良好的通信联络是分队行动中通信保障的重点。低劣的通信质量在实战中将导致分队无法及时得到上级行动命令、失去对战场情况的把控,指挥部无法及时了解作战情况,造成整个行动指挥的失控,最终导致丢失战场控制权,进而完全丧失战斗力。

随着现代技术的发展,各种无线、有线通信联络方式飞速发展,有效保障了分队行动中的良好通信联络。但是,战场环境的多变导致依靠无线电波等技术的通信联络具有较高的不确定性,其受地形、天气等要素的影响较多,同时也易遭到敌方势力的电子对抗打击从而降低甚至破坏我方通信联络效能。故此,作为分队行动中的战术手势通信不可或缺。

战术手势识别主要是以战术手势几何特征检验为前提,是通过探究对应的手势图像几何形状轮廓,结合相关特性来判断战术手势所蕴含的意义。就好比人在对另外一个战术手势进行识别的时候,往往需要访问自己大脑里面的记忆库,对相应的特征进行比对之后,如果与相关记忆库识别比对成功,就能够识别出战术手势的含义,如果该对象的特征无法被匹配,那么说明无法识别。

在民用领域中,识别人手部动作并给予相应反馈的手势识别研究,应用前景及潜藏的经济价值不可估量。如果能将该技术运用在军事方面,可以有效的提升部队现代化水平,提高部队对于信息的反应和处理能力,进而进一步提升单兵作战能力,减少物资和人员的消耗,全面提升战斗力。对于武警部队而言,分队战术手势识别技术可以广泛的被应用在反恐作战、防卫作战、处突维稳、日常执勤、看押看守等各个方面,分队战术手势识别的研究处于模式识别、图像处理、机器学习和计算机语言等多学科领域交叉地带,综合性很强。战术手势研究典型的应用领域有:智能控制、运动分析、虚拟现实等。通过战术手势识别技术的发展,可以实现人机通过手势变换进行交互,通过手势直接无线控制PC等电子产品;在文体活动中,手势识别也大放异彩,通过运动分析及手势分析可以极大地提高运动与舞蹈训练水平;手势分析同样可以帮助视频会议达到更好的效果,降低人物动画制作成本,或者帮助世界上不同区域的人利用互联网组成一个线上工作团队。

围绕武警部队在各类战斗、任务中的战术手势的重要性,每一名战斗在一线官兵都应该对战斗中所使用的战术手语非常熟悉,以真正达到传递信息、通信联络的作用。而常用的、熟悉的战术手语已经不具备较好的保密性和安全性,所以每一场战斗或者任务都应该将新编战术手语作为一项重要的准备工作来完成。那么设计规定好战术手语后,提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用便至关重要。选题即围绕战术手势的识别功能,以MATLAB为基础展开研究和设计。为便于官兵在训练中加强对手语的记忆掌握,根据不同的战术背景不同的手语需要,针对特战小队在实际任务中可以运用到的手语联络方式进行设计研究,通过自拟暗语进行训练测试,完成了基于MATLAB的战术手语的识别功能的设计与实现。

三、 课题研究内容

为提升提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用,最终使武警作战分队在执行任务过程中达到相互协同、信息交流及作战分队与指挥部的实时信息交互,确保各种条件下的精确稳定的信息传递,提高指挥部对作战的整体把握,保证任务圆满完成,针对武警作战分队在实际执行任务中的手势口令进行交流,立足于高保密性,高反馈性以及高实用性,研究设计和实现了基于MATLAB的作战手语战术手势识别功能,以实现手语向文字、语音结果的转化。本文着重介绍了MATLAB图像处理和手势识别的相关原理,设计的研究和实现,GUI用户使用界面的设计和实现,测试实验结果和结果分析四个方面。

(1)深入研究了MATLAB图像处理和手势识别的相关原理,介绍了计算机图像的基本概念以及MATLAB在图像处理方面的基本原理,阐述了MATLAB图像处理的几种基本方法,为设计的研究和实现提供了理论基础。

(2)设计实现了基于MATLAB的战术手势图像的处理和识别,并对本文中测试的十个手势图像及其结合语句赋予意义,通过图像处理基本方法对获取的手势图像进行处理,而后对结果进行匹配识别并进行语音播放,基本实现了预期设计目的。

(3)针对用户使用实际需求,利用MATLAB的GUI相关功能,设计实现了用户使用界面,对整个设计进行整理组合,达到了精简、便于使用的目的。

(4)进行了战术手势口令识别的相关测试。对图像以及设计使用环境进行了详细介绍,对设计整体进行测试,对设计的不足以及改进空间进行了深入分析。

四、手势识别介绍

手势识别(Gesture Recognition)指通过跟踪人类手势、识别并其转换为语义上有意义的命令的过程。手势图像识别的总体目标是通过计算机对获取的手的位置、姿势或形态等信息进行处理识别,并得出语义的解释或执行相应的操作。手势图像识别技术性并不是很强,其难点和重点主要是对大量数据信息的训练和处理。

手势的完成是一个动态的过程,这个过程包括了手指弯曲引起的手的形状和手在空间中的位置和方位的变化两个方面,在实际识别过程中,根据手势的时间特征,可以将手势分为静态手势和动态手势两种。相对而言,对于静态手势的识别,可以将其视为静态图像,将时间特征设定为统一值,对手势的空间特征进行研究,而动态手势则需要将时间和空间两个要素同时参考,以随时间变化的空间特征为属性对手势进行描述。静态手势的研究,可以利用手的关节、指间等特征值进行表示,而动态手势的研究则需要取一段时间内手的各种空间特征的测量序列值进行表示。同时,由于人手具有的自由度较多,运动较为复杂,导致相同的手势动作在不同的人操作时会呈现不同的运动,从而导致特征值的差别。

为了检测手的姿势或形态,可以使用通用分类器或模板匹配器进行识别。当对视频进行手势识别时,由于视频中手势含有轨迹,使其被赋予时间特征,那么就需要相应的技术诸如隐藏马尔可夫模型(HMM)等进行该特征的处理,从而使得动态的手势识别最终转化为静态的手势识别。

目前,作为比较流行的手势识别技术有模板匹配法、特征提取和BP神经网络算法。模板匹配法:作为最接近人本身对事物的识别的方法,模型匹配法是将传感器输入的原始数据与预先存储的模板进行匹配,通过测量两者之间的相似度来完成识别,相应的,模型匹配法需要大量的基础数据作为匹配对象来确保识别率,所以受到噪声、光照等复杂环境影响较大,并且识别速度慢。但是,模板匹配法具有简单、易掌握,普及程度高的优点。特征提取:指通过对输入数据的特征进行提取,并分析转化形成具有实际含义的特征属性,从而形成训练数据库,在对手势图像进行识别时,以训练数据库的特征为基础进行识别。特征提取方法缩小了基础数据的需求量,但依旧容易受到噪声、光照等复杂环境的影响,识别速度较慢。BP神经网络是一种前向传播的多层网络,BP神经网络算法是一种按误差逆传播算法训练的多层前馈网络。它的学习规则是使用最速下降法,通过反向传播来调整网络的权值和阈值,使得网络的误差平方和最小。

本文中结合运用了特征提取法和BP神经网络算法进行战术手势图像的识别,基本实现了较高的识别率同时识别速度较快。

五、 实现效果

v2-fd723448fdcc3d8a7799944b38b7a42c_b.jpg

六、参考源码

附录一 功能完整设计与实现代码

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

load('net.mat');%数据初始化

load('class_name.mat');

sound_dir = 'E:\基于MATLAB的战术手势识别功能的设计与实现\任务\匹配结果数据';

sound_list = dir([sound_dir,'\*.mp3']);

strvalue = {'前方发现敌人,所有人散开','前方敌人弱火力点,进行两侧攻击','发现敌人重火力点,迅速趴下','所有人散开,至前方集合','报告!搜索发现强火力点','敌人已消灭,前方展开搜索'};

re_mat= [123,176,285,914,428,3110];

regc = 0;

Image{1}=getimage(handles.axes1);%图像存入数组

Image{2}=getimage(handles.axes2);

Image{3}=getimage(handles.axes3);

for index=1:3

im =Image{index};%索引数组

fetuer_arr = Shape(im,0);

fetuer_arr = fetuer_arr';

fetuer_arr(1,:) =(fetuer_arr(1,:)-1)/(4-1);%%特征归一化

fetuer_arr(2,:) =(fetuer_arr(2,:)-10)/(100-10);%%特征归一化

fetuer_arr(3,:) =(fetuer_arr(3,:)-1)/(4-1);%%特征归一化

[result] = net(fetuer_arr);

[va,ind] = max(result);

ind = str2double(class_name{ind});

if(ind~=20)

regc = ind+regc*10;

else

regc = regc*100+ind;

end

end

[flag,memindex] = ismember(regc,re_mat);

% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

axes(handles.axes1);%清空图像

cla

axes(handles.axes2);

cla

axes(handles.axes3);

cla

axes(handles.axes4);

cla

set(handles.edit1,'string','');%清空结果

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

[filename,pathname]=uigetfile({'*.*'},'选择视频');

video = [pathname,filename];

obj = VideoReader(video); %读取视频文件

numFrames = obj.NumberOfFrames; %视频总的帧数

for y = 1: numFrames

frame = read(obj,y);

set(handles.axes4,'HandleVisibility','ON');%打开坐标,方便操作

axes(handles.axes4);%%使用图像,操作在坐标1

imshow(frame); %显示每一帧图片

end

for t = 1: numFrames

if 5*t



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3